﻿using System;
using System.Text.Json.Serialization;

namespace TowerCraneMonitorClient.NetClient.EventAlarm
{
    /// <summary>
    /// 报警事件
    /// </summary>
    public class Entity : NetClient.Entity
    {
        /// <summary>
        /// 事件类型
        /// </summary>
        public EventType EventType { get; set; }

        /// <summary>
        /// 事件发生的时间。为 Json 提供时间戳
        /// </summary>
        [JsonPropertyName("eventTime")]
        public long EventTimeStamp => EventTime.ToUnixTimeStamp().ToLong();

        /// <summary>
        /// 事件发生的时间。记录于数据库
        /// </summary>
        [JsonIgnore]
        public DateTime EventTime { get; set; }

        /// <summary>
        /// 事件信息依赖实体导航属性
        /// </summary>
        public EventMessage EventMessage { get; set; }

        /// <summary>
        /// 基于该对象生成 EventAlarm.Req 报文
        /// </summary>
        /// <param name="errorMessage">失败时返回错误信息，成功时返回 null</param>
        /// <returns>成功时返回 EventAlarm.Req 对象，失败时返回 null</returns>
        public new Req ToReq() => new Req(this);
    }
}
